</> 技術筆記Tech Notes

在 Ubuntu 25.04 上使用 Jenkins 自動化發布 Velo 部落格

本文將詳細說明如何在 Ubuntu 25.04 環境中,透過 Jenkins 自動化部署 Velo 部落格。

一、建立必要目錄

# 建立 Velo 安裝目錄
sudo mkdir /var/lib/velo

# 建立部落格目錄
sudo mkdir /var/www/velo-blog

二、設定目錄權限

2.1 建立專用群組並加入 Jenkins 使用者

建立群組 velo-blog-access 專門管理部落格的權限。

# 若群組尚未存在,則建立群組
sudo addgroup velo-blog-access

# 將 Jenkins 使用者加入此群組
sudo adduser jenkins velo-blog-access

提示:將使用者加入群組後,需要重啟 Jenkins 服務,新的權限才會完全生效。

sudo systemctl restart jenkins

2.2 調整部落格目錄的擁有權與權限

設定 /var/www/velo-blog/ 目錄的群組擁有者為 velo-blog-access,並賦予適當權限。

# 將群組擁有者設定為 velo-blog-access(-R 遞迴套用所有子項)
sudo chown -R root:velo-blog-access /var/www/velo-blog/

# 設定目錄權限為 775(擁有者與群組皆可讀寫執行,其他人僅可讀與執行)
sudo chmod -R 775 /var/www/velo-blog/

# 設定 setgid 標記,確保未來新增的檔案自動繼承群組權限
sudo chmod g+s /var/www/velo-blog/

三、安裝與設定 Velo

3.1 下載並安裝 Velo

以下以最新版本 v1.0.4 為範例:

cd /var/lib/velo
wget https://github.com/leoshiang/velo/releases/download/20250719/velo-v1.0.4-linux-arm64.zip
unzip velo-v1.0.4-linux-arm64.zip
sudo rm velo-v1.0.4-linux-arm64.zip

3.2 設定 Velo 執行權限

確保 jenkins 使用者有權限執行 Velo。

sudo chmod +x velo

3.3 建立並編輯設定檔

sudo rm velo.config.json.example
sudo touch velo.config.json
sudo nano velo.config.json

在編輯器內貼上以下內容:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "System": "Warning"
    }
  },
  "BlogContentPath": "/var/lib/jenkins/workspace/publish-velo-blog",
  "BlogSettings": {
    "HtmlOutputPath": "/var/www/velo-blog",
    "TemplatePath": "/var/lib/velo/templates/default",
    "ImageOutputPath": "/var/www/velo-blog/images",
    "ClearOutputDirectoryOnStart": true,
    "AutoAddYamlHeader": true,
    "AutoSaveModified": true
  }
}

儲存並離開編輯器(按下 Ctrl+O,輸入 Y 後按 Enter,再按 Ctrl+X)。

3.4 調整 Velo 目錄權限

最後,將 Velo 目錄的群組擁有者設定為 velo-blog-access,並設置適當權限:

# 更改群組擁有者為 velo-blog-access
sudo chown -R root:velo-blog-access /var/lib/velo

# 設定目錄權限為 775(擁有者與群組皆可讀寫執行,其他人僅可讀與執行)
sudo chmod -R 775 /var/lib/velo

四、Jenkins 腳本

在 Jekins 的 Job 執行以下指令(前面設定 git 的步驟略過)

#!/bin/bash -l
/var/lib/velo/velo

完成上述步驟後,即可透過 Jenkins 順利地發布並管理你的 Velo 部落格。